#pragma once

#include <string>
#include "core.h"
#include "Core/Timestep.h"
#include "event/event.h"

namespace Hazel{

    class HAZEL_API Layer
    {
    public:
        Layer(const std::string& name ="layer");
        virtual ~Layer();

        virtual void OnAttach(){}
        virtual void OnDetach(){}
        virtual void OnUpdate(Timestep ts){}
        virtual void OnImGuiRender(){}
        virtual void OnEvent(Event& event){}

        inline const std::string& GetName()const {return m_DebugName;}

    private:
        std::string m_DebugName;
    };
}